<template>
  <view>
    <router-view />
  </view>
</template>

<script>
import { createPinia } from 'pinia'
import { useUserStore } from '@/store/user'
import { connect, disconnect } from '@/utils/websocket'

export default {
  async onLaunch() {
    // 初始化Pinia
    if (!this.$pinia) {
      this.$pinia = createPinia()
      this.$app.use(this.$pinia)
    }
    
    // 检查登录状态
    const userStore = useUserStore()
    const hasLoginData = userStore.checkLoginData()
    
    if (hasLoginData) {
      // 有登录数据，恢复登录状态并检查入驻状态
      try {
        await userStore.restoreLoginState()
        // 登录成功后初始化WebSocket连接
        this.initWebSocket()
      } catch (error) {
        console.error('恢复登录状态失败:', error)
        // 恢复失败，跳转到登录页
        uni.redirectTo({ url: '/pages/login/index' })
      }
    } else {
      // 无登录数据，跳转到登录页
      uni.redirectTo({ url: '/pages/login/index' })
    }
  },

  onShow() {
    console.log('App Show')
    // 应用从后台进入前台时，检查WebSocket连接状态
    this.checkWebSocketConnection()
  },

  onHide() {
    console.log('App Hide')
  },

  onUnload() {
    // 应用卸载时关闭WebSocket连接
    disconnect()
  },

  methods: {
    /**
     * 初始化WebSocket连接
     */
    initWebSocket() {
      try {
        const userStore = useUserStore()
        if (userStore.merchantId) {
          console.log('初始化WebSocket连接，商户ID:', userStore.merchantId)
          
          // 建立WebSocket连接
          connect()
        } else {
          console.warn('商户ID不存在，无法建立WebSocket连接')
        }
      } catch (error) {
        console.error('初始化WebSocket连接失败:', error)
      }
    },

    /**
     * 检查WebSocket连接状态
     */
    checkWebSocketConnection() {
      // 由于websocket.js没有导出getStatus方法，这里简化处理
      // 直接尝试重新连接
      console.log('检查WebSocket连接状态，尝试重新连接')
      connect()
    },

    /**
     * 处理新订单消息
     */
    handleNewOrderMessage(message) {
      console.log('收到新订单通知:', message)
      
      // 发送系统通知
      uni.showModal({
        title: '新订单通知',
        content: `收到新订单，订单号：${message.orderId}，请及时处理！`,
        showCancel: false,
        confirmText: '知道了'
      })
    },

    /**
     * WebSocket连接打开
     */
    handleWebSocketOpen(data) {
      console.log('WebSocket连接已建立:', data)
    },

    /**
     * WebSocket连接关闭
     */
    handleWebSocketClose(data) {
      console.log('WebSocket连接已关闭:', data)
    },

    /**
     * WebSocket连接错误
     */
    handleWebSocketError(error) {
      console.error('WebSocket连接错误:', error)
    }
  }
}
</script>

<style lang="scss">
/* 引入uni.scss */
@import '@/uni.scss';

/* 全局样式 */
page {
  min-height: 100vh;
  background-color: #fafafa;
  background-image: linear-gradient(135deg, #fff8f8 0%, #fff5f7 50%, #fff8fa 100%);
  font-family: -apple-system, BlinkMacSystemFont, 'Segoe UI', Roboto, 'Helvetica Neue', Arial, sans-serif;
}
</style>